#ifndef PLAYER_H
#define PLAYER_H

#include "controllableObject.h"
#include "playersExtraData.h"

#define PLAYER_RUN_SPEED 3.0f
#define PLAYER_WALK_SPEED 1.0f

class Player : public ControllableObject
{
public:
	Player(void);
	void draw(sf::RenderWindow &window);
	//lets us know if the menu button has been released
private:
	int health;
	int attackPower;
	float speed;
	float currentHeight;
	float jumpSpeed;
	bool jumping;
	//sets the inputFunctions[] to the approrate function listed
	//below \/
	void initInputFunc();

	//these functions are executed when a button or key is pressed
	//mapped according to the game instruction manual.
	friend void playerRun(void *object, void *extraData = 0);
	friend void playerUp(void *object, void *extraData = 0);
	friend void playerDown(void *object, void *extraData = 0);
	friend void playerLeft(void *object, void *extraData = 0);
	friend void playerRight(void *object, void *extraData = 0);
	friend void nplayerRun(void *object, void *extraData = 0);
	friend void playerStatMenu(void *object, void *extraData = 0);
	friend void nplayerStatMenu(void *object, void *extraData = 0);
	friend void playerJump(void *object, void *extraData = 0);
	friend void nplayerJump(void *object, void *extraData = 0);

	//used for controller use
	friend void playerUpRight(void *object, void *extraData = 0);
	friend void playerDownRight(void *object, void *extraData = 0);
	friend void playerDownLeft(void *object, void *extraData = 0);
	friend void playerUpLeft(void *object, void *extraData = 0);
};


#endif //PLAYER_H